def solution(num):
    # 将数字转换为字符串
    s = str(num)
    n = len(s)

    # dp[i] 表示前 i 个字符的翻译方法总数
    dp = [0] * (n + 1)
    dp[0] = 1  # 空字符串有 1 种翻译方法
    dp[1] = 1  # 单个字符也只有 1 种翻译方法

    for i in range(2, n + 1):
        # 单独翻译 s[i-1]
        dp[i] += dp[i - 1]

        # 检查前两个字符是否可以组合翻译
        if 10 <= int(s[i - 2:i]) <= 25:
            dp[i] += dp[i - 2]

    return dp[n]

if __name__ == "__main__":
    # 添加测试用例
    print(solution(12258) == 5)      # 应输出: True
    print(solution(1400112) == 6)    # 应输出: True
    print(solution(2110101) == 10)    # 应输出: True
